// 设置 el-table 可进行鼠标左键按下左右拖动 
export function dragTable(tableDataRef) { 
    let mouseFlag = false, mouseStart = 0, startX = 0, tableBody = null; 
    if (tableDataRef !== null) { 
        // 鼠标按下事件，即鼠标按下但未释放的动作。 
        tableDataRef.value.$el.addEventListener('mousedown', function (e) { 
            tableBody = tableDataRef.value.$refs.scrollBarRef.wrapRef; setMouseFlag(true, tableBody); 
            mouseStart = e.clientX; startX = tableBody.scrollLeft; 
            // tableBody.style.cursor = 'grab'; 
            // 添加 dragstart 事件监听器 
            document.addEventListener('dragstart', handleDragStart); }); 
            // 鼠标释放事件，即鼠标按下后释放的动作。 
            tableDataRef.value.$el.addEventListener('mouseup', function () { 
                // console.log('鼠标左键松开++++++++++++'); 
                // mouseFlag = false; 
                // (tableBody as HTMLElement).style.cursor = 'auto'; 
                setMouseFlag(false, tableBody); 
                // 移除 dragstart 事件监听器 
                document.removeEventListener('dragstart', handleDragStart); 
            }); 
            // 鼠标移动事件，即鼠标在元素内移动的动作。 
            tableDataRef.value.$el.addEventListener('mousemove', function (e) { 
                if (mouseFlag) { 
                    const offset = e.clientX - mouseStart; 
                    (tableBody).scrollLeft = startX - offset; 
                } 
            }); 
            // 鼠标离开事件，即鼠标移动到元素外触发这个事件。 
            tableDataRef.value.$el.addEventListener('mouseleave', function (e) { 
                handleDragStart(e); 
            }); 
            // 检测到禁止光标手势 
            const handleDragStart = function (e) { 
                // console.log('禁止光标手势出现'); 
                // 取消默认的拖动效果 
                e.preventDefault(); setMouseFlag(false, tableBody); 
            }; 
            const setMouseFlag = function (flag, tableBody) { 
                mouseFlag = flag; if (tableBody) { 
                    tableBody.style.cursor = flag ? 'grab' : 'auto'; 
                } 
            }; 
        } 
    }